#include "ThreadPool.hpp"
#include <iostream>
#include <string>
#include <memory>
#include "Log.hpp"
#include "Task.hpp"
using namespace std;

int main()
{
    sleep(3);
    LOG(DEBUG, "程序加载成功");
    sleep(2);
    ThreadPool<Task>::GetInstance();
    sleep(2);
    ThreadPool<Task>::GetInstance();
    sleep(2);
    ThreadPool<Task>::GetInstance();
    sleep(2);
    ThreadPool<Task>::GetInstance();
    sleep(2);
    ThreadPool<Task>::GetInstance()->waitAll();
    return 0;
}

// int main()
// {
//     srand(time(nullptr) ^ getpid() ^ pthread_self());
//     // EnableFile();
//     EnableScreen();
//     //  线程池指针
//     //  unique_ptr<ThreadPool<int>> tp = make_unique<ThreadPool<int>>();
//     unique_ptr<ThreadPool<Task>> tp(new ThreadPool<Task>());
//     // 初始化线程池
//     tp->InitThreadPool();
//     // 启动线程池
//     tp->Start();
//     sleep(2);
//     // 任务入队列
//     int tasknum = 10; // 任务数
//     while (tasknum > 0)
//     {
//         sleep(1);
//         int a = rand() % 10 + 1;
//         usleep(1234);
//         int b = rand() % 10 + 1;
//         Task t(a, b);
//         LOG(Info, "主线程插入任务:%s", t.DebugToString().c_str());
//         tp->Enqueue(t);
//         tasknum--;
//     }
//     // 线程池退出
//     tp->Stop();
//     // 等待线程池
//     tp->waitAll();

//     // Test(6, 11, 22, 33, 44, 55, 66);
//     // LogMessage(__FILE__, __LINE__, DEBUG, "hello world");
//     // LogMessage(__FILE__, __LINE__, DEBUG, "hello world-%d", 1);
//     // LogMessage(__FILE__, __LINE__, DEBUG, "hello world-%d-%f", 1, 1.23);

//     // LOG(DEBUG, "hello world");
//     // LOG(DEBUG, "hello world-%d", 10);
//     // LOG(DEBUG, "hello world-%d-%s", 10, "hahahaha");
//     return 0;
// }